

with Ada.Calendar; 

package body Generateur_De_Nombres_Aleatoires is

use  Ada.Calendar;

   -- ***********************************************************************
   -- Auteur      : Jean-Marie RIGAUD
   --               Universite Paul Sabatier
   --               31062 TOULOUSE Cedex
   -- Date        : Octobre 1997
   -- Materiel    : PC 
   -- Compilateur : GNAT 3.10p
   -- ***********************************************************************

   A : constant := 13849;
   M : constant := 65536;
   C : constant := 56963;
   X : Long_Integer;

   -- =====================================================
   -- ATTENTION
   --  x doit etre declare de type LONG_INTEGER
   --  lorsque le type INTEGER est defini sur 16 bits
   --  Ceci est le cas pour le compilateur ALSYS sur Sun
   -- =====================================================


   function Flottant_Aleatoire (Max_Valeur : Integer:=1) return Float is
      F, Result : Float;
   begin
      X := (A * X + C) mod M;
      F := Float (X) / Float (M);
      Result := F * Float (Max_Valeur);
      return Result;
   end Flottant_Aleatoire;


   function Entier_Aleatoire (Max_Valeur : Integer:=1) return Integer is
      Result : Float;
   begin
      Result := Flottant_Aleatoire(Max_Valeur);
      return Integer(Result);
   end Entier_Aleatoire;


begin
   X := Long_Integer (Seconds (Clock));

end Generateur_De_Nombres_Aleatoires;
